6 追蹤者

使用 Gii 產生程式碼

本節將描述如何使用 Gii 自動產生程式碼,以實作一些常見的網站功能。使用 Gii 自動產生程式碼僅僅是在 Gii 網頁上顯示的說明中輸入正確的資訊即可。

透過本教學課程,您將學習如何

  • 在您的應用程式中啟用 Gii,
  • 使用 Gii 產生 Active Record 類別,
  • 使用 Gii 產生實作 DB 表格 CRUD 操作的程式碼,
  • 自訂 Gii 產生的程式碼。

啟動 Gii

Gii 在 Yii 中作為一個 模組 提供。您可以透過在應用程式的 modules 屬性中配置 Gii 來啟用它。根據您建立應用程式的方式,您可能會在 config/web.php 配置檔案中找到以下程式碼

$config = [ ... ];

if (YII_ENV_DEV) {
    $config['bootstrap'][] = 'gii';
    $config['modules']['gii'] = [
        'class' => 'yii\gii\Module',
    ];
}

上述配置說明,當處於 開發環境 時,應用程式應包含一個名為 gii 的模組,其類別為 yii\gii\Module

如果您檢查應用程式的 入口腳本 web/index.php,您會找到以下行,它基本上使 YII_ENV_DEVtrue

defined('YII_ENV') or define('YII_ENV', 'dev');

由於該行程式碼,您的應用程式處於開發模式,並且已經根據上述配置啟用了 Gii。您現在可以透過以下 URL 存取 Gii

https://hostname/index.php?r=gii

注意:如果您從 localhost 以外的機器存取 Gii,預設情況下會基於安全目的拒絕存取。您可以配置 Gii 以新增允許的 IP 位址,如下所示:

'gii' => [
    'class' => 'yii\gii\Module',
    'allowedIPs' => ['127.0.0.1', '::1', '192.168.0.*', '192.168.178.20'] // adjust this to your needs
],

Gii

產生 Active Record 類別

若要使用 Gii 產生 Active Record 類別,請選取「模型產生器」(按一下 Gii 索引頁面上的連結)。然後填寫表單如下

  • 表格名稱: country
  • 模型類別: Country

Model Generator

接下來,按一下「預覽」按鈕。您將看到 models/Country.php 列在要建立的結果類別檔案中。您可以按一下類別檔案的名稱以預覽其內容。

使用 Gii 時,如果您已經建立相同的檔案並且將要覆寫它,請按一下檔案名稱旁邊的 diff 按鈕,以查看要產生的程式碼與現有版本之間的差異。

Model Generator Preview

當覆寫現有檔案時,請勾選「覆寫」旁邊的方框,然後按一下「產生」按鈕。如果建立新檔案,您可以直接按一下「產生」。

接下來,您將看到一個確認頁面,指示程式碼已成功產生。如果您有現有檔案,您也會看到一則訊息,指示該檔案已使用新產生的程式碼覆寫。

產生 CRUD 程式碼

CRUD 代表 Create(建立)、Read(讀取)、Update(更新)和 Delete(刪除),表示大多數網站上針對資料採取的四個常見任務。若要使用 Gii 建立 CRUD 功能,請選取「CRUD 產生器」(按一下 Gii 索引頁面上的連結)。對於「country」範例,請填寫結果表單如下

  • 模型類別: app\models\Country
  • 搜尋模型類別: app\models\CountrySearch
  • 控制器類別: app\controllers\CountryController

CRUD Generator

接下來,按一下「預覽」按鈕。您將看到要產生的檔案清單,如下所示。

CRUD Generator Preview

如果您先前已建立 controllers/CountryController.phpviews/country/index.php 檔案(在指南的資料庫章節中),請勾選「覆寫」方框以取代它們。(先前的版本沒有完整的 CRUD 支援。)

試用看看

若要查看其運作方式,請使用您的瀏覽器存取以下 URL

https://hostname/index.php?r=country%2Findex

您將看到一個資料網格,顯示資料庫表格中的國家/地區。您可以排序網格,或透過在欄位標頭中輸入篩選條件來篩選網格。

對於網格中顯示的每個國家/地區,您可以選擇檢視其詳細資訊、更新它或刪除它。您也可以按一下網格頂端的「建立國家/地區」按鈕,以取得用於建立新國家/地區的表單。

Data Grid of Countries

Updating a Country

以下是 Gii 產生的檔案清單,如果您想研究這些功能是如何實作的,或自訂它們

  • 控制器: controllers/CountryController.php
  • 模型: models/Country.phpmodels/CountrySearch.php
  • 視圖: views/country/*.php

資訊:Gii 旨在成為高度可自訂和可擴充的程式碼產生工具。明智地使用它可以大大加快您的應用程式開發速度。如需更多詳細資訊,請參閱 Gii 章節。

總結

在本節中,您已學習如何使用 Gii 產生程式碼,以實作儲存在資料庫表格中內容的完整 CRUD 功能。

發現錯字或您認為此頁面需要改進?
在 github 上編輯 !